.\"
.\" Copyright 1998 by the Massachusetts Institute of Technology.
.\" SPDX-License-Identifier: MIT
.\"
.TH ARES_PROCESS 3 "25 July 1998"
.SH NAME
ares_process_fd, ares_process \- Process events for name resolution
.SH SYNOPSIS
.nf
#include <ares.h>

void ares_process_fd(ares_channel_t *\fIchannel\fP,
                     ares_socket_t \fIread_fd\fP,
                     ares_socket_t \fIwrite_fd\fP)

void ares_process(ares_channel_t *\fIchannel\fP,
                  fd_set *\fIread_fds\fP,
                  fd_set *\fIwrite_fds\fP)

.fi
.SH DESCRIPTION
The \fBares_process_fd(3)\fP function handles input/output events and timeouts
associated with queries pending on the name service channel identified by
\fIchannel\fP. The file descriptor passed in \fIread_fd\fP and \fIwrite_fd\fP
indicate if the file descriptor has been notified of a read event or write
event, respectively.  If a notification has not occurred, use
\fIARES_SOCKET_BAD\fP.

This function is typically used with the \fIARES_OPT_SOCK_STATE_CB\fP option.

\fBares_timeout(3)\fP should be used to retrieve the desired timeout, and when
the timeout expires, the integrator must call \fBares_process_fd(3)\fP with
both sockets set to \fIARES_SOCKET_BAD\fP.  There is no need to do this if
events are also delivered for any file descriptors as timeout processing
will automatically be handled by any call to \fBares_process_fd(3)\fP.

The \fBares_process(3)\fP function works in the same manner, except it works
on \fIfd_sets\fP as is used by \fBselect(3)\fP and retrieved by
\fBares_fds(3)\fP.  This method is deprecated and should not be used in modern
applications due to known limitations to the \fBselect(3)\fP implementation.


.SH SEE ALSO
.BR ares_fds (3),
.BR ares_timeout (3),
.BR ares_init_options (3)
with \fIARES_OPT_EVENT_THREAD\fP or \fIARES_OPT_SOCK_STATE_CB\fP
